package com.itao;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.apache.poi.ss.usermodel.Workbook;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * @author sjt
 * @Date 2025/4/22 15:54
 */
public class Excel {

    public static void main(String[] args) {
        // 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
        // {} 代表普通变量 {.} 代表是list的变量 {前缀.} 前缀可以区分不同的list
        String templateFileName = "C:\\Users\\sjt\\Desktop\\2.xlsx";

        String fileName = "C:\\Users\\sjt\\Desktop\\1.xlsx";
        // 方案1
        ExcelWriter excelWriter = EasyExcel.write(fileName)
                .withTemplate(templateFileName)
                .inMemory(true)
                .build();
        WriteSheet writeSheet = EasyExcel.writerSheet().build();

        Map<String, Object> map = new HashMap<>();
        map.put("date1", "2025年1月");
        map.put("company", "办公厅");

        map.put("jdcount1", 1);
        map.put("jdprice1", new BigDecimal("1.0"));
        map.put("jdcount2", 2);
        map.put("jdprice2", new BigDecimal("2.0"));
        map.put("jdcount3", 3);
        map.put("jdprice3", new BigDecimal("3.0"));
        map.put("jdcount4", 4);
        map.put("jdprice4", new BigDecimal("4.0"));

        map.put("kfcount", 1);
        map.put("kfprice", 1);

        map.put("zbcount1", 1);
        map.put("zbprice1", 1);
        map.put("zbcount2", 2);
        map.put("zbprice2", 2);
        map.put("zbcount3", 3);
        map.put("zbprice3", 3);

        map.put("jbcount", 1);
        map.put("jbprice", 1);

        map.put("cqcount1", 1);
        map.put("cqprice1", 1);
        map.put("cqcount2", 2);
        map.put("cqprice2", 2);
        map.put("cqcount3", 3);
        map.put("cqprice3", 3);

        map.put("qdcount1", 1);
        map.put("qdprice1", 1);
        map.put("qdcount2", 2);
        map.put("qdprice2", 2);
        map.put("qdcount3", 3);
        map.put("qdprice3", 3);
        map.put("qdcount4", 4);
        map.put("qdprice4", 4);

        map.put("date2", "2025年2月19日");
        excelWriter.fill(map, writeSheet);
        // 强制执行公式
        Workbook workbook = excelWriter.writeContext().writeWorkbookHolder().getWorkbook();
        workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
        excelWriter.finish();

    }
}
